/**
    Copyright (C) 2011  Alexander Vollmer

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package org.jefb.aop;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Aspect
public class EntityInterceptorAspect {
	private static Logger logger = LoggerFactory.getLogger(EntityInterceptorAspect.class);

	//@Around("execution(* org.jefb.entity.*.*(..))")
	public Object aroundAdvice(ProceedingJoinPoint call) throws Throwable {
		long start = System.currentTimeMillis();
		Object retVal = call.proceed();
		
		double end = Double.valueOf(System.currentTimeMillis() - start) / 1000;
		logger.info("Entity:"+call.getThis().getClass()+" | Method:" + call.getSignature().getName()
				+ " | Execution time(s):" + end);
		return retVal;
	}
}
